export const ariaEp = {
  role: null,
  ariaAtomic: null,
  ariaAutoComplete: null,
  ariaBusy: null,
  ariaChecked: null,
  ariaColCount: null,
  ariaColIndex: null,
  ariaColSpan: null,
  ariaCurrent: null,
  ariaDisabled: null,
  ariaExpanded: null,
  ariaHasPopup: null,
  ariaHidden: null,
  ariaInvalid: null,
  ariaKeyShortcuts: null,
  ariaLabel: null,
  ariaLevel: null,
  ariaLive: null,
  ariaModal: null,
  ariaMultiLine: null,
  ariaMultiSelectable: null,
  ariaOrientation: null,
  ariaPlaceholder: null,
  ariaPosInSet: null,
  ariaPressed: null,
  ariaReadOnly: null,
  ariaRequired: null,
  ariaRoleDescription: null,
  ariaRowCount: null,
  ariaRowIndex: null,
  ariaRowSpan: null,
  ariaSelected: null,
  ariaSetSize: null,
  ariaSort: null,
  ariaValueMax: null,
  ariaValueMin: null,
  ariaValueNow: null,
  ariaValueText: null,
};

const done = {
  //e:
  getAttributeNames: function (): string[] {
    throw new Error('Function not implemented.');
  },
  hasAttributes: function (): boolean {
    throw new Error('Function not implemented.');
  },
  toggleAttribute: function (qualifiedName: string, force?: boolean | undefined): boolean {
    throw new Error('Function not implemented.');
  },
  // e + Attr:
  namespaceURI: null,
  prefix: null,
  // d:
  // w+e
  scroll: function (options?: ScrollToOptions | undefined): void {
    throw new Error('Function not implemented.');
  },
  scrollBy: function (options?: ScrollToOptions | undefined): void {
    throw new Error('Function not implemented.');
  },
  scrollTo: function (options?: ScrollToOptions | undefined): void {
    throw new Error('Function not implemented.');
  },

  //   htmlElement + window + Document：
  onscrollend: null,
  // visualViewport + window
  onresize: null,
  // visualViewport + htmlElement + window + Document：
  onscroll: null,

  // e + Attr:
  localName: '',
  // e:
  scrollIntoView: function (arg?: boolean | ScrollIntoViewOptions | undefined): void {
    throw new Error('Function not implemented.');
  },
  // d:
  scrollingElement: null,
};

const todo = {
  // e:
  hasPointerCapture: function (pointerId: number): boolean {
    throw new Error('Function not implemented.');
  },
  releasePointerCapture: function (pointerId: number): void {
    throw new Error('Function not implemented.');
  },
  requestPointerLock: function (): void {
    // 指针锁定
    throw new Error('Function not implemented.');
  },
  setPointerCapture: function (pointerId: number): void {
    throw new Error('Function not implemented.');
  },
  // d:
  exitPointerLock: function (): void {
    throw new Error('Function not implemented.');
  },
  pointerLockElement: null,
  onpointerlockchange: null,
  onpointerlockerror: null,

  caretRangeFromPoint: function (x: number, y: number): Range | null {
    throw new Error('Function not implemented.');
  },
  elementFromPoint: function (x: number, y: number): Element | null {
    throw new Error('Function not implemented.');
  },
  elementsFromPoint: function (x: number, y: number): Element[] {
    throw new Error('Function not implemented.');
  },
  //  htmlElement + window + Document：
  ongotpointercapture: null,
  onlostpointercapture: null,
  onpointercancel: null,

  onpointerdown: null,
  onpointerenter: null,
  onpointerleave: null,
  onpointermove: null,
  onpointerout: null,
  onpointerover: null,
  onpointerup: null,

  // ---------------------------------------------------------------------------------------------------------
  // document:
  pictureInPictureEnabled: false,
  exitPictureInPicture: function (): Promise<void> {
    throw new Error('Function not implemented.');
  },
  pictureInPictureElement: null,

  // d:
  visibilityState: 'hidden',

  adoptedStyleSheets: [],
  styleSheets: undefined,
  fonts: undefined,
  // e:
  checkVisibility: function (options?: CheckVisibilityOptions | undefined): boolean {
    throw new Error('Function not implemented.');
  },
  // h:
  inert: false, // 元素当前是否不活跃
  // window:
  devicePixelRatio: 0,
  // #endregion

  // window + document:
  location: undefined, // todo 重要的 Location

  // w:
  history: undefined, // todo 重要的 History
};
// 废弃的、反对使用 或 经常用的：
const del = {
  // document 废弃:
  rootElement: null,
  bgColor: '',
  fgColor: '', // 就是css的color
  clear: function (): void {
    // 该方法什么都不做，仅仅为了调用不报错
    throw new Error('Function not implemented.');
  },
  createProcessingInstruction: function () {
    throw new Error('Function not implemented.');
  },
  applets: undefined, // 弃用，applet元素已没有任何支持
  anchors: undefined, // a标签

  // htmlElement + document:
  onresize: null, // 不存在
  // document 反对使用：
  write: function (...text: string[]): void {
    throw new Error('Function not implemented.');
  },
  writeln: function (...text: string[]): void {
    throw new Error('Function not implemented.');
  },
  execCommand: function (commandId: string, showUI?: boolean | undefined, value?: string | undefined): boolean {
    throw new Error('Function not implemented.');
  },
  queryCommandEnabled: function (commandId: string): boolean {
    throw new Error('Function not implemented.');
  },
  queryCommandIndeterm: function (commandId: string): boolean {
    throw new Error('Function not implemented.');
  },
  queryCommandState: function (commandId: string): boolean {
    throw new Error('Function not implemented.');
  },
  queryCommandSupported: function (commandId: string): boolean {
    throw new Error('Function not implemented.');
  },
  queryCommandValue: function (commandId: string): string {
    throw new Error('Function not implemented.');
  },
  // window 不存在:

  // window:
  setInterval: function (): number {
    throw new Error('Function not implemented.');
  },
  setTimeout: function (): number {
    throw new Error('Function not implemented.');
  },
  clearInterval: function (id: number | undefined): void {
    throw new Error('Function not implemented.');
  },
  clearTimeout: function (id: number | undefined): void {
    throw new Error('Function not implemented.');
  },
  indexedDB: undefined,
  localStorage: undefined,
  sessionStorage: undefined,
  alert: function (message?: any): void {
    throw new Error('Function not implemented.');
  },
  confirm: function (message?: string | undefined): boolean {
    throw new Error('Function not implemented.');
  },
  prompt: function (message?: string | undefined, _default?: string | undefined): string | null {
    throw new Error('Function not implemented.');
  },
  document: undefined,
};
